!function() {
    function n(n, r) {
        var t = (65535 & n) + (65535 & r);
        return (n >> 16) + (r >> 16) + (t >> 16) << 16 | 65535 & t;
    }
    function r(r, t, e, o, u, c) {
        return n((c = n(n(t, r), n(o, c))) << (u = u) | c >>> 32 - u, e);
    }
    function t(n, t, e, o, u, c, f) {
        return r(t & e | ~t & o, n, t, u, c, f);
    }
    function e(n, t, e, o, u, c, f) {
        return r(t & o | e & ~o, n, t, u, c, f);
    }
    function o(n, t, e, o, u, c, f) {
        return r(t ^ e ^ o, n, t, u, c, f);
    }
    function u(n, t, e, o, u, c, f) {
        return r(e ^ (t | ~o), n, t, u, c, f);
    }
    function c(r, c) {
        var f, i, a, h;
        r[c >> 5] |= 128 << c % 32, r[14 + (c + 64 >>> 9 << 4)] = c;
        for (var g = 1732584193, l = -271733879, v = -1732584194, d = 271733878, C = 0; C < r.length; C += 16) g = t(f = g, i = l, a = v, h = d, r[C], 7, -680876936), 
        d = t(d, g, l, v, r[C + 1], 12, -389564586), v = t(v, d, g, l, r[C + 2], 17, 606105819), 
        l = t(l, v, d, g, r[C + 3], 22, -1044525330), g = t(g, l, v, d, r[C + 4], 7, -176418897), 
        d = t(d, g, l, v, r[C + 5], 12, 1200080426), v = t(v, d, g, l, r[C + 6], 17, -1473231341), 
        l = t(l, v, d, g, r[C + 7], 22, -45705983), g = t(g, l, v, d, r[C + 8], 7, 1770035416), 
        d = t(d, g, l, v, r[C + 9], 12, -1958414417), v = t(v, d, g, l, r[C + 10], 17, -42063), 
        l = t(l, v, d, g, r[C + 11], 22, -1990404162), g = t(g, l, v, d, r[C + 12], 7, 1804603682), 
        d = t(d, g, l, v, r[C + 13], 12, -40341101), v = t(v, d, g, l, r[C + 14], 17, -1502002290), 
        g = e(g, l = t(l, v, d, g, r[C + 15], 22, 1236535329), v, d, r[C + 1], 5, -165796510), 
        d = e(d, g, l, v, r[C + 6], 9, -1069501632), v = e(v, d, g, l, r[C + 11], 14, 643717713), 
        l = e(l, v, d, g, r[C], 20, -373897302), g = e(g, l, v, d, r[C + 5], 5, -701558691), 
        d = e(d, g, l, v, r[C + 10], 9, 38016083), v = e(v, d, g, l, r[C + 15], 14, -660478335), 
        l = e(l, v, d, g, r[C + 4], 20, -405537848), g = e(g, l, v, d, r[C + 9], 5, 568446438), 
        d = e(d, g, l, v, r[C + 14], 9, -1019803690), v = e(v, d, g, l, r[C + 3], 14, -187363961), 
        l = e(l, v, d, g, r[C + 8], 20, 1163531501), g = e(g, l, v, d, r[C + 13], 5, -1444681467), 
        d = e(d, g, l, v, r[C + 2], 9, -51403784), v = e(v, d, g, l, r[C + 7], 14, 1735328473), 
        g = o(g, l = e(l, v, d, g, r[C + 12], 20, -1926607734), v, d, r[C + 5], 4, -378558), 
        d = o(d, g, l, v, r[C + 8], 11, -2022574463), v = o(v, d, g, l, r[C + 11], 16, 1839030562), 
        l = o(l, v, d, g, r[C + 14], 23, -35309556), g = o(g, l, v, d, r[C + 1], 4, -1530992060), 
        d = o(d, g, l, v, r[C + 4], 11, 1272893353), v = o(v, d, g, l, r[C + 7], 16, -155497632), 
        l = o(l, v, d, g, r[C + 10], 23, -1094730640), g = o(g, l, v, d, r[C + 13], 4, 681279174), 
        d = o(d, g, l, v, r[C], 11, -358537222), v = o(v, d, g, l, r[C + 3], 16, -722521979), 
        l = o(l, v, d, g, r[C + 6], 23, 76029189), g = o(g, l, v, d, r[C + 9], 4, -640364487), 
        d = o(d, g, l, v, r[C + 12], 11, -421815835), v = o(v, d, g, l, r[C + 15], 16, 530742520), 
        g = u(g, l = o(l, v, d, g, r[C + 2], 23, -995338651), v, d, r[C], 6, -198630844), 
        d = u(d, g, l, v, r[C + 7], 10, 1126891415), v = u(v, d, g, l, r[C + 14], 15, -1416354905), 
        l = u(l, v, d, g, r[C + 5], 21, -57434055), g = u(g, l, v, d, r[C + 12], 6, 1700485571), 
        d = u(d, g, l, v, r[C + 3], 10, -1894986606), v = u(v, d, g, l, r[C + 10], 15, -1051523), 
        l = u(l, v, d, g, r[C + 1], 21, -2054922799), g = u(g, l, v, d, r[C + 8], 6, 1873313359), 
        d = u(d, g, l, v, r[C + 15], 10, -30611744), v = u(v, d, g, l, r[C + 6], 15, -1560198380), 
        l = u(l, v, d, g, r[C + 13], 21, 1309151649), g = u(g, l, v, d, r[C + 4], 6, -145523070), 
        d = u(d, g, l, v, r[C + 11], 10, -1120210379), v = u(v, d, g, l, r[C + 2], 15, 718787259), 
        l = u(l, v, d, g, r[C + 9], 21, -343485551), g = n(g, f), l = n(l, i), v = n(v, a), 
        d = n(d, h);
        return [ g, l, v, d ];
    }
    function f(n) {
        for (var r = "", t = 32 * n.length, e = 0; e < t; e += 8) r += String.fromCharCode(n[e >> 5] >>> e % 32 & 255);
        return r;
    }
    function i(n) {
        var r = [];
        for (r[(n.length >> 2) - 1] = void 0, e = 0; e < r.length; e += 1) r[e] = 0;
        for (var t = 8 * n.length, e = 0; e < t; e += 8) r[e >> 5] |= (255 & n.charCodeAt(e / 8)) << e % 32;
        return r;
    }
    function a(n) {
        for (var r, t = "0123456789abcdef", e = "", o = 0; o < n.length; o += 1) r = n.charCodeAt(o), 
        e += t.charAt(r >>> 4 & 15) + t.charAt(15 & r);
        return e;
    }
    function h(n) {
        return unescape(encodeURIComponent(n));
    }
    function g(n) {
        return f(c(i(n = h(n)), 8 * n.length));
    }
    function l(n, r) {
        return function(n, r) {
            var t, e = i(n), o = [], u = [];
            for (o[15] = u[15] = void 0, 16 < e.length && (e = c(e, 8 * n.length)), t = 0; t < 16; t += 1) o[t] = 909522486 ^ e[t], 
            u[t] = 1549556828 ^ e[t];
            return r = c(o.concat(i(r)), 512 + 8 * r.length), f(c(u.concat(r), 640));
        }(h(n), h(r));
    }
    module.exports = function(n, r, t) {
        return r ? t ? l(r, n) : a(l(r, n)) : t ? g(n) : a(g(n));
    };
}();